WPF (Windows Presentation Foundation) অ্যাপ্লিকেশন তৈরি করার সময়, কখনো কখনো আপনাকে কাস্টম কন্ট্রোল (Custom Control) অথবা ইউজার কন্ট্রোল (User Control) তৈরি করতে হতে পারে, যা স্ট্যান্ডার্ড কন্ট্রোলগুলোর চেয়ে আরও কাস্টমাইজড এবং ফিচার সমৃদ্ধ হয়। WPF তে Custom Control এবং User Control এর মধ্যে পার্থক্য রয়েছে, এবং এগুলো বিভিন্ন পরিস্থিতিতে ব্যবহৃত হয়।
এখানে Custom Control এবং User Control তৈরি করার প্রক্রিয়া ও তাদের মধ্যে পার্থক্য আলোচনা করা হবে।
Custom Control
Custom Control হলো এমন একটি কন্ট্রোল যা WPF ফ্রেমওয়ার্কের বেস কন্ট্রোল (যেমন Button, TextBox ইত্যাদি) থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হয় এবং যার মধ্যে আপনি কাস্টম লোগিক, স্টাইল, বা আচরণ যোগ করতে পারেন। Custom Control সাধারণত Control ক্লাস থেকে ইনহেরিট করা হয় এবং UI কন্ট্রোলের সম্পূর্ণ কাস্টম ডিজাইন করতে আপনাকে একটি কাস্টম টেমপ্লেট ও স্টাইল প্রদান করতে হয়।
Custom Control তৈরি করার ধাপ:
- প্রজেক্ট তৈরি করা:
Visual Studio তে একটি নতুন WPF Custom Control Library প্রজেক্ট তৈরি করুন। - Custom Control কোড লেখা:
Custom Control তৈরি করতে, আপনিControlক্লাসকে ইনহেরিট করবেন এবং এর মধ্যে কাস্টম লজিক এবং UI টেমপ্লেট যুক্ত করবেন। - Control Template এবং Style:
Custom Control এর জন্য ControlTemplate এবং Style XAML এ ডিজাইন করতে হবে।
Custom Control উদাহরণ:
- CustomControl.xaml.cs (C# কোড):
using System.Windows;
using System.Windows.Controls;
namespace WPFApplication
{
public class MyCustomButton : Control
{
static MyCustomButton()
{
// Default style for MyCustomButton
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyCustomButton), new FrameworkPropertyMetadata(typeof(MyCustomButton)));
}
public MyCustomButton()
{
// Custom logic here if needed
}
}
}
- Themes/Generic.xaml (Control Template):
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="local:MyCustomButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:MyCustomButton">
<Button Content="Custom Button" Background="LightBlue" Padding="10"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
- MainWindow.xaml (Using Custom Control):
<Window x:Class="WPFApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPFApplication"
Title="Custom Control Example" Height="350" Width="525">
<Grid>
<local:MyCustomButton Width="200" Height="50"/>
</Grid>
</Window>
এখানে:
- MyCustomButton একটি কাস্টম কন্ট্রোল তৈরি করা হয়েছে, যা
Controlক্লাস থেকে ইনহেরিট করা হয়েছে। - ControlTemplate ব্যবহার করে কাস্টম স্টাইল এবং UI ডিজাইন করা হয়েছে।
User Control
User Control হলো একটি কাস্টম UI উপাদান, যা একাধিক স্ট্যান্ডার্ড কন্ট্রোলের সমন্বয়ে তৈরি হয়। এটি একটি UI কন্ট্রোল হিসেবে ব্যবহার করা হয় এবং সাধারণত UserControl ক্লাস থেকে ইনহেরিট করা হয়। User Control ব্যবহার করে আপনি কমপ্লেক্স UI উপাদান তৈরি করতে পারেন যা পুনঃব্যবহারযোগ্য হয়।
User Control তৈরি করার ধাপ:
- প্রজেক্ট তৈরি করা:
Visual Studio তে একটি নতুন WPF Application তৈরি করুন। - User Control তৈরি করা:
Visual Studio তে User Control তৈরি করতে, আপনাকে UserControl.xaml ফাইল তৈরি করতে হবে, যেখানে UI উপাদানগুলি ডিজাইন করা হবে।
User Control উদাহরণ:
- MyUserControl.xaml:
<UserControl x:Class="WPFApplication.MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="300" Height="150">
<Grid>
<TextBox Name="MyTextBox" Width="200" Height="30" Margin="10"/>
<Button Content="Submit" Width="100" Height="30" Margin="10,50,10,10"/>
</Grid>
</UserControl>
- MyUserControl.xaml.cs (C# কোড):
using System.Windows;
using System.Windows.Controls;
namespace WPFApplication
{
public partial class MyUserControl : UserControl
{
public MyUserControl()
{
InitializeComponent();
}
}
}
- MainWindow.xaml (Using User Control):
<Window x:Class="WPFApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPFApplication"
Title="User Control Example" Height="350" Width="525">
<Grid>
<local:MyUserControl/>
</Grid>
</Window>
এখানে:
- MyUserControl একটি কাস্টম UI উপাদান তৈরি করা হয়েছে, যা TextBox এবং Button কন্ট্রোলের সমন্বয়ে তৈরি।
- MainWindow.xaml এ MyUserControl ব্যবহার করা হয়েছে।
Custom Control এবং User Control এর মধ্যে পার্থক্য (Differences Between Custom Control and User Control)
| Feature | Custom Control | User Control |
|---|---|---|
| Base Class | Control ক্লাস থেকে ইনহেরিট করা হয় | UserControl ক্লাস থেকে ইনহেরিট করা হয় |
| UI Definition | ControlTemplate ব্যবহার করে UI কাস্টমাইজ করা হয় | XAML ফাইলে UI উপাদানগুলি সরাসরি ডিজাইন করা হয় |
| Use Case | UI উপাদানগুলি যেগুলি আরও কাস্টমাইজড এবং স্টাইলড হতে পারে | একাধিক স্ট্যান্ডার্ড কন্ট্রোলের সমন্বয়ে কাস্টম UI তৈরি করা |
| Inheritance | Control এবং এর টেমপ্লেট ব্যবহার করা হয় | XAML এ UI উপাদান সরাসরি যুক্ত করা হয় |
| Customization | সম্পূর্ণ কাস্টম ডিজাইন এবং লোগিক ব্যবহার করা হয় | UI এলিমেন্টগুলোর মধ্যে কম কাস্টমাইজেশন |
| Performance | সাধারণত বেশি পারফরম্যান্স, কারণ স্টাইল ও টেমপ্লেট স্বতন্ত্র হয় | কিছুটা কম পারফরম্যান্স হতে পারে যদি UI জটিল হয় |
সারাংশ (Summary)
- Custom Control এবং User Control উভয়ই WPF অ্যাপ্লিকেশনে কাস্টম UI তৈরি করতে ব্যবহৃত হয়, তবে Custom Control বেশি কাস্টমাইজেবল এবং রিইউজেবল, যেখানে User Control সাধারণত একাধিক UI উপাদানকে একত্রিত করে একটি কাস্টম UI উপাদান তৈরি করে।
- Custom Control এ সাধারণত
ControlTemplateএবংStyleব্যবহার করে UI কাস্টমাইজ করা হয়, কিন্তু User Control তে সরাসরি UI ডিজাইন করা হয়। - Custom Control মূলত স্ট্যান্ডার্ড কন্ট্রোলের কার্যকারিতা সম্প্রসারণ করার জন্য ব্যবহৃত হয়, তবে User Control ছোট আকারের কাস্টম UI এলিমেন্ট তৈরিতে সহায়ক।
Read more